<?php
namespace api\controllers;

use yii\rest\Controller;
use yii\filters\Cors;
use yii\helpers\ArrayHelper;

/**
 * API 项目基类控制器 api项目所有接口控制器都要继承此类
 * Class ApiController
 * @package api\controllers
 */
class ApiController extends \yii\rest\Controller
{

    const ERROR_CODE_NOT_POST = 4405;           // 接口错误码 不是POST请求
    const ERROR_CODE_FORM_FIELD_ERROR = 4001;   // 接口错误码 表单字段错误
    const ERROR_CODE_FORM_ERROR = 5000;         // 接口错误码 服务器出错 表单保存出错

    /**
     * 重载请求动作方法前
     * 可在此处做一些代码检查，比如网站是否关闭，用户是否登录
     * @param mixed $action 当前请求的动作
     * @return bool
     * @throws \yii\web\BadRequestHttpException
     */
    public function beforeAction($action)
    {
        $res = parent::beforeAction($action);

        // 检测网站是否关闭
        // todo
        return $res;
    }

    /**
     * 检测post请求
     * 如果非post请求，发送4405代码
     * @return mixed
     */
    public function validateIsPost()
    {
        if (!\Yii::$app->getRequest()->getIsPost()) {
            $response = \Yii::$app->getResponse();
            $response->data = \Yii::$app->api->error(static::ERROR_CODE_NOT_POST, \Yii::t('common', 'The request is not in a post way.'));
            $response->send();
        }
        return true;
    }
}
